home *** CD-ROM | disk | FTP | other *** search
/ New Star Software Collection / NSS_Collection.iso / 3-075 super jam 10 / 1.ima / SJAM.MS_ / SJAM.bin
Encoding:
Text File  |  1993-04-23  |  11.1 KB  |  408 lines

  1. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  2. '                       SuperJAM! installation script
  3. '                       Modified from Setup Toolkit's SAMPLE1.MST
  4. '                           by David Rosenbaum
  5. '
  6. ' Outline of SuperJAM! setup procedure:
  7. '
  8. '   x Introduce the setup program
  9. '
  10. '   x Check for system compatibility
  11. '
  12. '   x Ask for destination directory
  13. '
  14. '   x Check for room on destination drive(s)
  15. '
  16. '   x Get registration information
  17. '
  18. '   x Install files
  19. '
  20. '   x Add program manager group which includes SuperJAM! icon and demo
  21. '   song icon
  22. '
  23. '   x Add association of .SJM files to SuperJAM! in file manager
  24. '
  25. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  26.  
  27. '''''$DEFINE DEBUG  ''Define for script development/debugging
  28.  
  29. '$INCLUDE 'setupapi.inc'
  30. '$INCLUDE 'msdetect.inc'
  31.  
  32. '
  33. ' Dialog ID's
  34. '
  35. CONST ASKQUIT = 200
  36. CONST BADSERNUM = 7806
  37. CONST BADWINVERSION = 1000
  38. CONST CONFIRMREGISTRATIONINFO = 7300
  39. CONST EXITFAILURE = 400
  40. CONST EXITSUCCESS = 700
  41. CONST EXITQUIT = 600
  42. CONST GETDESTPATH = 300
  43. CONST GETREGISTRATIONINFO = 7801
  44. CONST NONAME = 7805
  45. CONST NOTENOUGHROOM = 1100
  46. CONST UNWRITABLEDESTDIR = 7804
  47. CONST UNWRITABLESRCDIR = 7802
  48.  
  49. '
  50. ' Bitmap ID
  51. '
  52. CONST LOGO = 1
  53.  
  54. '
  55. ' From windows.h:
  56. '
  57. CONST WS_VISIBLE=&H10000000
  58. CONST WS_BORDER =&H00800000
  59. CONST WS_CLIPCHILDREN =&H02000000
  60. CONST GWL_STYLE =-16
  61. CONST SW_SHOWMAXIMIZED=3
  62.  
  63. '
  64. ' Forward declarations
  65. '
  66. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  67.  
  68. DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%,iShow%) AS INTEGER
  69. DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG
  70.  
  71. DECLARE SUB munge LIB "mscuistf.dll" ( sz$ )
  72. DECLARE FUNCTION getnamesernum LIB "mscuistf.dll" ( libName$, custName$, serNum$ ) AS INTEGER
  73. DECLARE FUNCTION stringtoboolean2 LIB "mscuistf.dll" ( sz$ ) AS INTEGER
  74. DECLARE FUNCTION stringtoboolean1 LIB "mscuistf.dll" ( sz$ ) AS INTEGER
  75.  
  76. '
  77. ' Execution "starts" here
  78. '
  79. INIT:
  80.     ' Maximize the window
  81.     hWnd%=HwndFrame()
  82.     l&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN)
  83.     i%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED)
  84.  
  85. '$IFDEF DEBUG
  86.     i% = SetCopyMode( 0 )
  87. '$ENDIF ''DEBUG
  88.  
  89.     _cuiDLL$ = "mscuistf.dll"            ''Custom user interface dll
  90.  
  91.     SetBitmap _cuiDLL$, LOGO
  92.     SetTitle "SuperJAM! Setup"
  93.  
  94.     infFile$ = GetSymbolValue("STF_SRCINFPATH")
  95.     IF infFile$ = "" THEN
  96.         infFile$ = GetSymbolValue("STF_CWDDIR") + "SJAM.INF"
  97.     END IF
  98.     prev% = ShowWaitCursor()
  99.     ReadInfFile infFile$
  100.     RestoreCursor prev%
  101.  
  102.     _srcDir$ = GetSymbolValue("STF_SRCDIR")
  103.     winDrive$ = MID$(GetWindowsDir, 1, 1)
  104.     _destDir$ = winDrive$ + ":\SUPERJAM"
  105.  
  106.     _extraCosts$ = "ExtraCosts"
  107.     FOR i% = 1 TO 26 STEP 1
  108.         AddListItem _extraCosts$, "0"
  109.     NEXT i%
  110.     ''Add extra cost to Windows drive for ini/progman, etc.
  111.     drive% = ASC(ucase$(winDrive$)) - ASC("A") + 1
  112.     ReplaceListItem _extraCosts$, drive%, "10240"
  113.  
  114. '$IFDEF DEBUG
  115.     i% = SetSizeCheckMode( scmOnIgnore )  '' could use scmOff; def = scmOnFatal
  116. '$ENDIF ''DEBUG
  117.  
  118.  
  119.  
  120. CHECKWINVERSION:
  121.     _majorVersion% = GetWindowsMajorVersion()
  122.     _minorVersion% = GetWindowsMinorVersion()
  123.  
  124. '$IFDEF DEBUG
  125.     _majorVersion = 3
  126.     _minorVersion = 0
  127. '$ENDIF ''DEBUG
  128.  
  129.     IF _majorVersion < 3 OR (_majorVersion = 3 AND _minorVersion < 1) THEN
  130.         GOSUB BADWINVERSION
  131.     END IF
  132.  
  133.  
  134. GETPATHINIT:
  135.     SetSymbolValue "EditTextIn", _destDir$
  136.     SetSymbolValue "EditFocus", "END"
  137. GETPATH:
  138.     ret$ = UIStartDlg( _cuiDLL$, GETDESTPATH, "FEditDlgProc", 0, "" )
  139.     _destDir$ = GetSymbolValue("EditTextOut")
  140.     IF ret$ = "CONTINUE" THEN
  141.         UIPop 1
  142.         prev% = ShowWaitCursor()
  143.         i% = IsDirWritable( _destDir$ )
  144.         RestoreCursor prev%
  145.         IF i% = 0 THEN
  146.             GOSUB UNWRITABLEDESTDIR
  147.             GOTO GETPATH
  148.         END IF
  149.     ELSEIF ret$ = "REACTIVATE" THEN
  150.         GOTO GETPATH
  151.     ELSE
  152.         GOSUB ASKQUIT
  153.         GOTO GETPATHINIT
  154.     END IF
  155.  
  156.  
  157. CHECKSIZE:
  158.     prev% = ShowWaitCursor()
  159.     ClearCopyList
  160.     AddSectionFilesToCopyList "Files", _srcDir$, _destDir$
  161.     DestDrive$ = MID$( _destDir$, 1, 1 )
  162.     drive% = ASC( ucase$( DestDrive$ ) ) - ASC( "A" ) + 1
  163.     ''Add extra cost to destination drive for LOGFILE.OUT
  164.     ReplaceListItem _extraCosts$, drive%, "10240"
  165.     _stillNeed& = GetCopyListCost( _extraCosts$, "", "" )
  166.     RestoreCursor prev%
  167.     IF _stillNeed& > 0 THEN
  168.         GOSUB NOTENOUGHROOM
  169.         ReplaceListItem _extraCosts$, drive%, "0"
  170.         GOTO GETPATH
  171.     END IF
  172.  
  173.  
  174. GETREGISTRATIONINFOINIT:
  175.     fileName$ = GetSectionKeyFilename( "Files", "BRMIDI" )
  176.     pathName$ = MakePath( _srcDir$, fileName$ )
  177.     custName$ = STRING$( 40, "x" )
  178.     serNum$ = STRING$( 20, "x" )
  179.     prev% = ShowWaitCursor()
  180.     i% = getnamesernum( pathName$, custName$, serNum$ )
  181.     RestoreCursor prev%
  182.     'j% = DoMsgBox( custName$ + serNum$, pathName$ + STR$( i% ), MB_TASKMODAL+MB_ICONHAND+MB_OK )
  183.  
  184. '$IFNDEF DEBUG
  185.     if stringtoboolean2( serNum$ ) = 0 THEN
  186.         GOTO INSTALL
  187.     END IF
  188. '$ENDIF
  189.  
  190.     SetSymbolValue "NameIn", ""
  191.     SetSymbolValue "SerNumIn", ""
  192.     SetSymbolValue "CurrentControl", "NAME"
  193.  
  194. GETREGISTRATIONINFO:
  195.     ret$ = UIStartDlg(_cuiDLL$, GETREGISTRATIONINFO, "FNameSerNumDlgProc", 0, "")
  196.     IF ret$ = "CONTINUE" THEN
  197.         UIPop 1
  198.     ELSE
  199.         GOSUB ASKQUIT             
  200.         GOTO GETREGISTRATIONINFO
  201.     END IF
  202.     _custNameOut$ = GetSymbolValue( "NameOut" )
  203.     _serNumOut$ = GetSymbolValue( "SerNumOut" )
  204.     SetSymbolValue "NameIn", _custNameOut$
  205.     SetSymbolValue "SerNumIn", _serNumOut$
  206.  
  207.     IF LEN( _custNameOut$ ) <= 0 THEN
  208.         ret$ = UIStartDlg( _cuiDLL$, NONAME, "FInfo0DlgProc", 0, "" )
  209.         UIPop 1
  210.         SetSymbolValue "CurrentControl", "NAME"
  211.         GOTO GETREGISTRATIONINFO
  212.     END IF
  213.     
  214.     IF stringtoboolean1( _serNumOut$) = 0 THEN
  215.         ret$ = UIStartDlg( _cuiDLL$, BADSERNUM, "FInfo0DlgProc", 0, "" )
  216.         UIPop 1
  217.         SetSymbolValue "CurrentControl", "SERNUM"
  218.         GOTO GETREGISTRATIONINFO
  219.     END IF
  220.  
  221.  
  222.  
  223. CONFIRMREGISTRATIONINFOINIT:
  224.     AddListItem "ConfirmTextIn", ""  
  225.     AddListItem "ConfirmTextIn", ""  
  226.     AddListItem "ConfirmTextIn", ""  
  227.     ReplaceListItem "ConfirmTextIn", 1, _custNameOut$
  228.     ReplaceListItem "ConfirmTextIn", 2, _serNumOut$
  229. CONFIRMREGISTRATIONINFO:
  230.     ret$ = UIStartDlg( _cuiDLL$, CONFIRMREGISTRATIONINFO, "FConfirmDlgProc", 0, "" )
  231.     IF ret$ = "CONTINUE" THEN
  232.         UIPop 1
  233.     ELSEIF ret$ = "REACTIVATE" THEN        
  234.         GOTO CONFIRMREGISTRATIONINFOINIT
  235.     ELSEIF ret$ = "BACK" THEN
  236.         UIPop 1
  237.         GOTO GETREGISTRATIONINFO
  238.     ELSE
  239.         GOSUB ASKQUIT
  240.         GOTO CONFIRMREGISTRATIONINFOINIT
  241.     END IF
  242.  
  243.     munge _custNameOut$
  244.     munge _serNumOut$
  245.     stamp$=CHR$(LEN(_custNameOut$))+_custNameOut$+CHR$(LEN(_serNumOut$))+_serNumOut$
  246.  
  247.  
  248.  
  249. CHECKWRITABLEFLOPPY:
  250.     IF IsDirWritable(_srcDir$) = 0 THEN
  251.         GOSUB UNWRITABLESRCDIR
  252.         GOTO CHECKWRITABLEFLOPPY
  253.     END IF
  254.  
  255.     prev% = ShowWaitCursor()
  256.     StampResource "Files", "BRMIDI", _srcDir$, 6, &H272, stamp$, LEN(stamp$)
  257.     RestoreCursor prev%
  258.     
  259.  
  260. INSTALL:
  261.     prev% = ShowWaitCursor()
  262.     CreateDir _destDir$, cmoNone
  263.     OpenLogFile MakePath(_destDir$, "LOGFILE.OUT"), 0
  264.     WriteToLogFile ""
  265.     WriteToLogFile "  User chose as destination directory: '" + _destDir$ + "'"
  266.     WriteToLogFile ""
  267.     WriteToLogFile "  May have had to create the directory: " + _destDir$
  268.     WriteToLogFile ""
  269.     RestoreCursor prev%
  270.  
  271.     CopyFilesInCopyList
  272.  
  273.     progName$ = "SuperJAM!"
  274.     pathName$ = MakePath( _destDir$, "superjam.exe") 
  275.  
  276. '$IFNDEF DEBUG
  277.     CreateProgmanGroup progName$, "", cmoNone
  278.     ShowProgmanGroup  progName$, 1, cmoNone
  279.     CreateProgmanItem progName$, progName$, pathName$, "", cmoOverwrite
  280.     CreateProgmanItem progName$, "Demo Song", pathName$ + " SONGS\demo.sjm", pathName$ + ",8", cmoOverwrite
  281. '$ENDIF ''DEBUG
  282.  
  283.     CreateIniKeyValue "win.ini", "Extensions", "sjm", pathName$ + " ^.sjm", cmoOverWrite
  284.  
  285.     CloseLogFile
  286.  
  287.  
  288. '
  289. ' This is the ON ERROR target for everything else
  290. '
  291. QUIT:
  292.     ON ERROR GOTO ERRQUIT
  293.  
  294.     IF ERR = 0 THEN
  295.         dlg% = EXITSUCCESS
  296.     ELSEIF ERR = STFQUIT THEN
  297.         dlg% = EXITQUIT
  298.     ELSE
  299.         dlg% = EXITFAILURE
  300.     END IF
  301. QUITL1:
  302.     ret$ = UIStartDlg(_cuiDLL$, dlg%, "FInfo0DlgProc", 0, "")
  303.     IF ret$ = "REACTIVATE" THEN
  304.         GOTO QUITL1
  305.     END IF
  306.     UIPop 1
  307.  
  308.     END
  309.  
  310.  
  311. ERRQUIT:
  312.     i% = DoMsgBox("Setup sources were corrupted.  Please call Blue Ribbon Technical Support at (404)315-0212", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  313.     END
  314.  
  315.  
  316. BADWINVERSION:
  317.     'i% = DoMsgBox( "You seem to be running Windows" + STR$( _majorVersion ) + "." + LTRIM$( STR$( _minorVersion ) ) + ".  SuperJAM! requires Windows 3.1 or above.", "Required Windows Version", MB_TASKMODAL+MB_ICONHAND+MB_OK )
  318.     ret$ = UIStartDlg( _cuiDLL$, BADWINVERSION, "FQuitDlgProc", 0, "" )
  319.     IF ret$ = "EXIT" THEN
  320.         UIPop 1
  321.         ERROR STFERR
  322.     ELSEIF ret$ = "REACTIVATE" THEN
  323.         GOTO BADWINVERSION
  324.     ELSE
  325.         UIPop 1
  326.     END IF
  327.     RETURN
  328.  
  329.  
  330. UNWRITABLEDESTDIR:
  331.     ret$ = UIStartDlg(_cuiDLL$, UNWRITABLEDESTDIR, "FQuitDlgProc", 0, "")
  332.     IF ret$ = "EXIT" THEN
  333.         UIPop 1
  334.         ERROR STFERR
  335.     ELSEIF ret$ = "REACTIVATE" THEN
  336.         GOTO UNWRITABLEDESTDIR
  337.     ELSE
  338.         UIPop 1
  339.     END IF
  340.     RETURN
  341.  
  342.                                                             
  343. NOTENOUGHROOM:
  344.     SetSymbolValue "KStillNeeded", STR$( _stillNeed& / 1024 )
  345.     ret$ = UIStartDlg( _cuiDLL$, NOTENOUGHROOM, "FNotEnoughRoomDlgProc", 0, "" )
  346.     IF ret$ = "EXIT" THEN
  347.         UIPop 1
  348.         ERROR STFERR
  349.     ELSEIF ret$ = "REACTIVATE" THEN
  350.         GOTO NOTENOUGHROOM
  351.     ELSE
  352.         UIPop 1
  353.     END IF
  354.     RETURN
  355.  
  356.  
  357. UNWRITABLESRCDIR:
  358.     ret$ = UIStartDlg( _cuiDLL$, UNWRITABLESRCDIR, "FQuitDlgProc", 0, "" )
  359.     IF ret$ = "EXIT" THEN
  360.         UIPop 1
  361.         ERROR STFERR
  362.     ELSEIF ret$ = "REACTIVATE" THEN
  363.         GOTO UNWRITABLESRCDIR
  364.     ELSE
  365.         UIPop 1
  366.     END IF
  367.     RETURN
  368.  
  369.  
  370. ASKQUIT:
  371.     ret$ = UIStartDlg(_cuiDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  372.  
  373.     IF ret$ = "EXIT" THEN
  374.         UIPopAll
  375.         ERROR STFQUIT
  376.     ELSEIF ret$ = "REACTIVATE" THEN
  377.         GOTO ASKQUIT
  378.     ELSE
  379.         UIPop 1
  380.     END IF
  381.     RETURN
  382.  
  383.  
  384. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  385. ' FUNCTION MakePath
  386. '
  387. ' Purpose:
  388. '     Appends a file name to the end of a directory path,
  389. '     inserting a backslash character as needed.
  390. ' Arguments:
  391. '     pathName$ - full directory path (with optional ending "\")
  392. '     fileName$ - file name to append to directory
  393. ' Returns:
  394. '     Resulting fully qualified path name.
  395. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  396.  
  397. FUNCTION MakePath (pathName$, fileName$) STATIC AS STRING
  398.     IF pathName$ = "" THEN
  399.         MakePath = fileName$
  400.     ELSEIF fileName$ = "" THEN
  401.         MakePath = pathName$
  402.     ELSEIF MID$(pathName$, LEN(pathName$), 1) = "\" THEN
  403.         MakePath = pathName$ + fileName$
  404.     ELSE
  405.         MakePath = pathName$ + "\" + fileName$
  406.     END IF
  407. END FUNCTION
  408.